//: concurrency/SynchronizedEvenGenerator.java
// Simplifying mutexes with the synchronized keyword.
// {RunByHand}
package concurrency;

public class SynchronizedEvenGenerator extends IntGenerator
{
    private int currentEvenValue = 0;
    
    public synchronized int next()
    {
        ++currentEvenValue;
        Thread.yield(); // Cause failure faster
        ++currentEvenValue;
        return currentEvenValue;
    }
    
    public static void main(String[] args)
    {
        EvenChecker.test(new SynchronizedEvenGenerator());
    }
} /// :~
